﻿--[[File:ItemEventHandler.lua]]
GlobalItemFn = {}

--需要的功能物品，另外制作
--#include "./NormalItem/RollItem.lua" once     				--爆率物品
--#include "./NormalItem/HeadTitleItem.lua" once     				--称号物品使用
--#include "./NormalItem/ProabilityItem.lua" once     		--爆率物品
--#include "./NormalItem/UseItemCreateMonster.lua" once     	--创建怪物

--#include "./NormalItem/UseSkillBook.lua" once          		--使用技能书学习技能
--#include "./NormalItem/UseAlarmItem.lua" once					--使用报警器
--#include "./NormalItem/UseNormalItem.lua" once				--使用基础物品
--#include "./NormalItem/UseTreasureMap.lua" once				--使用藏宝图
--#include "./NormalItem/UseSpecialItem.lua" once				--使用特殊物品
--#include "./NormalItem/UseSelectItem.lua" once				--使用选择物品
--#include "./NormalItem/UseBossToken.lua" once					--使用boss令牌
--#include "./NormalItem/UseWeaponFationItem.lua" once			--使用时装幻武物品

EventCallDispatcher.handlerUseFunctionItems = function (sysarg, arg)
	if not arg then
		return false
	end 
	--物品ID和物品的指针
	local itemidx = arg[1]  --物品的ID
	local itemPtr = arg[2] --物品的指针
	local delType = arg[3]	--物品删除类型  如果为0则在脚本删除物品 1则扣除耐久(次数)
	local param = arg[4]
	local itemUserNum = arg[5]  --物品使用的数量
	local actorName = arg[6]
	local isHeroUse = arg[7]
	
	local fnt = GlobalItemFn[itemidx]
	if fnt then
		if fnt.func( sysarg, itemidx, itemPtr, fnt.params, delType, itemUserNum,actorName,param, isHeroUse) then
			return true
		else
			print("item["..itemidx.."] call function return false.")
			return false
		end
	else
		print("item["..itemidx.."] no function.")
	end
	return false
end


ItemOpFuncList = {}

EventCallDispatcher.handlerItemOp = function (sysarg, args)
 --print("参数："..args[1])
  if args[1] == nil then return end   
  local func = ItemOpFuncList[args[1]]
  if func ~= nil then
    func(sysarg, args) 
  end
end

--物品被使用
ItemOpFuncList[gGetItemTimesUsed] = function(sysarg, args)
	local itemId = args[2]
	SendItemTimesUsed(sysarg, itemId)
end


EventCallDispatcher.registerEventCall(BaseTypes.ActorEventId.aeUseItem, EventCallDispatcher.handlerUseFunctionItems)
EventCallDispatcher.registerEventCall(aeItemOp, EventCallDispatcher.handlerItemOp)
